line discipline
端末(TTY)とプロセスの間に入って文字列を加工する層 主な仕事
特殊文字の処理
code:_
Ctrl+U → 行全体を削除
Ctrl+W → 直前の単語を削除
Ctrl+S → 出力を一時停止(画面がフリーズしたように見える)
Ctrl+Q → 出力を再開
2つの主要なモードがある
code:_
canonical mode:
raw mode:
stty -a でline disciplineの現在の設定を見ることができる:
code:bash
$ stty -a
speed 38400 baud;
rows 24; columns 80; # ← ウィンドウサイズ
...
-parenb -parodd cs8 -hupcl -cstopb ...
icanon echo echoe ... # ← icanon = canonical mode が有効
# ← echo = エコーバックが有効
isig iexten ... # ← isig = シグナル生成が有効
...
intr = ^C; # ← Ctrl+C が SIGINT を送る
quit = ^\; # ← Ctrl+\ が SIGQUIT を送る
erase = ^?; # ← Backspace(^?)が1文字削除
kill = ^U; # ← Ctrl+U が行削除
eof = ^D; # ← Ctrl+D が EOF
susp = ^Z; # ← Ctrl+Z が SIGTSTP を送る
これらはすべてline disciplineの設定であり、変更可能:
code:bash
stty intr ^X # Ctrl+Xでプロセス中断するように変更
stty -echo # エコーバックを無効化
stty raw # raw modeに切り替え
stty sane # 設定を元に戻す(壊したとき用)